# Load 2019 geometry and election results
precincts_2019 = gpd.read_file('2019_Voting_Districts_for_King_County___votdst_area_2019.geojson')
results_2019 = pd.read_csv('2019-results.csv', encoding='latin1')
# Load proposed district lines
commissioner_lines = gpd.read_file('Commisioners_Plan.zip')
# Filter for City of Seattle races & precincts
results_2019 = results_2019[results_2019.Precinct.str.contains('SEA ')]
results_2019 = results_2019[results_2019.Race.str.contains('City of Seattle')]
precincts_2019 = precincts_2019[precincts_2019['NAME'].str.contains('SEA ')]
# Get results by precinct
all_races = results_2019.pivot(index='Precinct',columns=['Race','CounterType'])['SumOfCount']
d1=all_races['City of Seattle Council District No. 1 Council District No. 1'].dropna()
d2=all_races['City of Seattle Council District No. 2 Council District No. 2'].dropna()
d3=all_races['City of Seattle Council District No. 3 Council District No. 3'].dropna()
d4=all_races['City of Seattle Council District No. 4 Council District No. 4'].dropna()
d5=all_races['City of Seattle Council District No. 5 Council District No. 5'].dropna()
d6=all_races['City of Seattle Council District No. 6 Council District No. 6'].dropna()
d7=all_races['City of Seattle Council District No. 7 Council District No. 7'].dropna()
# Assign "Seattle Times" and "The Stranger" candidates
d1_renamed = d1.rename({'Lisa Herbold':'The Stranger','Phil Tavel':'Seattle Times'},axis=1)
d2_renamed = d2.rename({'Tammy Morales':'The Stranger','Mark Solomon':'Seattle Times'},axis=1)
d3_renamed = d3.rename({'Kshama Sawant':'The Stranger','Egan Orion':'Seattle Times'},axis=1)
d4_renamed = d4.rename({'Shaun Scott':'The Stranger','Alex Pedersen':'Seattle Times'},axis=1)
d5_renamed = d5.rename({'Debora Juarez':'The Stranger','Ann Davison Sattler':'Seattle Times'},axis=1)
d6_renamed = d6.rename({'Dan Strauss':'The Stranger','Heidi Wills':'Seattle Times'},axis=1)
d7_renamed = d7.rename({'Andrew J. Lewis':'The Stranger','Jim Pugel':'Seattle Times'},axis=1)
# Combine all individual district results into one map
st_v_stranger = pd.concat([d1_renamed, d2_renamed, d3_renamed, d4_renamed, d5_renamed, d6_renamed, d7_renamed])
# Calculate vote share by precinct for Seattle Times and Stranger candidates
st_v_stranger['Seattle Times Vote Share'] = st_v_stranger['Seattle Times']/st_v_stranger['Times Counted']
st_v_stranger['The Stranger Vote Share'] = stranger_vote_share = st_v_stranger['The Stranger']/st_v_stranger['Times Counted']
# Merge results with geometry
precincts_with_results = precincts_2019.merge(st_v_stranger, how='left', left_on='NAME', right_on='Precinct')
# Generate results map object for use with each individual map's lines
results_map = precincts_with_results.explore('Seattle Times Vote Share', style_kwds={'fillOpacity':1.0}, cmap='PiYG')